<?php
namespace App\Admin\Controller;

use Doctrine\DBAL\Types\BooleanType;

use \Foxforms\Widget\Field\Select;
use \Foxforms\Widget\Form;
use \Foxforms\Widget\Field\Input;
use \Foxforms\Widget\Field\Checkbox;

class pessoaController extends \Foxframe\Controller
{
	public function index($params = array())
	{
		$this->redirect(BASE_PATH.'admin/pessoa/viewListar');
	}

	public function viewListar($params = array())
	{
		$lista = $this->em->getRepository('\Entities\Corp\Pessoa')->listar();
		$this->view->assign('lista', $lista->getResult());
	}

	public function viewCadastrar($params = array())
	{
		if(isset($params['id']) && !empty($params['id']))
			$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['id']);
		else
			$pessoa	= new \Entities\Corp\Pessoa();

		$form	= new Form();
		if(isset($params['aba']) && !empty($params['aba']))
			$form->addElement(Input::create('pessoa[aba]')->setType('hidden')->setId('aba')->setValue($params['aba']));
		else
			$form->addElement(Input::create('pessoa[aba]')->setType('hidden')->setId('aba'));

		$form->addValues($pessoa, 'pessoa');
		$form->addElement(Input::create('pessoa[id_pessoa]')->setType('hidden'));
		$form->addElement(Input::create('pessoa[version]')->setType('text'));
		$form->addElement(
				Select::create('pessoa[tp_pessoa]')
				->setLabel('Tipo de pessoa')
				->setId('tp_pessoa')
				->validate()
				->setOption(array('Fisica'=>'Pessoa física','Juridica'=>'Pessoa jurídica'))
				->setPlaceHolder('-- Selecione --')
				->addClass('input-xlarge')
				->setSelected($pessoa->getTpPessoa())
		);
		$form->addElement(Checkbox::create('pessoa[fl_usuario]')->defaultValue(1)->setLabel('Usuário'));
		$form->addElement(Checkbox::create('pessoa[fl_cliente]')->defaultValue(1)->setLabel('Cliente'));
		$form->addElement(Checkbox::create('pessoa[fl_fornecedor]')->defaultValue(1)->setLabel('Fornecedor'));
		$form->addElement(Checkbox::create('pessoa[fl_banco]')->defaultValue(1)->setLabel('Banco'));
		$this->view->assign('form', $form);
		$this->view->assign('pessoa', $pessoa);
	}

	public function viewDadosGerais($params = array())
	{
		$method = 'viewPessoa'.$params['tp_pessoa'];
		$form	= $this->$method($params);
		$this->view->assign('form', $form);
		return $this->returnAjax(null,null,$method);
	}

	public function viewPessoaFisica($params = array())
	{
		if (isset($params['id']) && !empty($params['id']) && $params['id'] != 'null')
			$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['id']);
		else
			$pessoa	= new \Entities\Corp\Pessoa();

		$form	= new Form();
		$form->addValues($pessoa, 'pessoa');
		$form->addClass('validate');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('savePessoa'));
		$form->addElement(Input::create('pessoa[id_pessoa]')->setType('hidden'));
		$form->addElement(Input::create('pessoa[version]')->setType('hidden'));
		$form->addElement(Input::create('pessoa[ds_apelido]')->setLabel('Apelido')->validate());
		$form->addElement(Input::create('pessoa[ds_nome]')->setLabel('Nome')->validate()->addClass('input-xxlarge'));
		$form->addElement(Input::create('pessoa[nu_cpf]')->setLabel('CPF')->addClass('cpf'));
		$form->addElement(Input::create('pessoa[nu_rg]')->setLabel('RG')->addClass('number'));
		$form->addElement(
				Select::create('pessoa[tp_genero]')
				->setLabel('Sexo')
				->setId('genero')
				->validate()
				->setOption(array('M'=>'Masculino','F'=>'Feminino'))
				->setPlaceHolder('-- Selecione o sexo--')
		);
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass('btn btn-primary'));
		return $form;

	}

	public function viewPessoaJuridica($params = array())
	{
		if(isset($params['id']) && !empty($params['id']) && $params['id'] != 'null')
			$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['id']);
		else
			$pessoa	= new \Entities\Corp\Pessoa();

		$form	= new Form();
		$form->addValues($pessoa, 'pessoa');
		$form->addClass('validate');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('savePessoa'));
		$form->addElement(Input::create('pessoa[version]')->setType('hidden'));
		$form->addElement(Input::create('pessoa[id_pessoa]')->setType('hidden'));
		$form->addElement(Input::create('pessoa[nu_cnpj]')->setLabel('CNPJ')->validate()->addClass('cnpj'));
		$form->addElement(Input::create('pessoa[nu_inscricao_estadual]')->setLabel('Insc. estadual')->addClass('number'));
		$form->addElement(Input::create('pessoa[nu_inscricao_municipal]')->setLabel('Insc. munic.')->addClass('number'));
		$form->addElement(Input::create('pessoa[ds_nome]')->setLabel('Razão social')->validate()->addClass('input-xxlarge'));
		$form->addElement(Input::create('pessoa[ds_apelido]')->setLabel('Fantasia')->validate()->addClass('input-xlarge'));
		$form->addElement(
				Select::create('pessoa[tp_genero]')
				->setLabel('Gênero')
				->setId('genero')
				->validate()
				->setOption(array('M'=>'Masculino','F'=>'Feminino'))
				->setPlaceHolder('-- Selecione o gênero --')
		);

		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass('btn btn-primary'));
		return $form;
	}

	public function viewEmail($params = array())
	{
		if(isset($params['id']) && !empty($params['id']))
		{
			$emails = $this->em->getRepository('\Entities\Corp\Email')->findBy(array("pessoa" => $params['id']));
			$this->view->assign('emails', $emails);
		}
		$form	= new Form();
		$form->addClass('validate');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveEmail'));
		$form->addElement(Input::create('email[aba]')->setType('hidden')->setValue($params['aba']));
		$form->addElement(Input::create('pessoa[id_pessoa]')->setType('hidden')->setValue($params['id']));
		$form->addElement(Input::create('pessoa[emails][id_email]')->setType('hidden'));
		$form->addElement(Input::create('pessoa[emails][ds_email]')->setLabel('Email')->validate()->addClass('email input-xxlarge'));
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass(array('btn','btn-primary')));
		$this->view->assign('form', $form);
		return $this->returnAjax();
	}

	public function viewTelefone($params = array())
	{
		if(isset($params['id']) && !empty($params['id']))
		{
			$pessoa		= $this->em->getRepository('\Entities\Corp\Pessoa')->find($params['id']);
			$telefones	= $pessoa->getTelefones();
			$this->view->assign('telefones', $telefones);
		}
		$form	= new Form();
		$form->addClass('validate');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveTelefone'));
		$form->addElement(Input::create('telefone[aba]')->setType('hidden')->setValue($params['aba']));
		$form->addElement(Input::create('telefone[pessoa]')->setType('hidden')->setValue($params['id']));

		$form->addElement(
				Select::create('telefone[tp_telefone]')
				->setLabel('Tipo de telefone')
				->setId('tipotelefone')
				->validate()
				->setOption(array('r'=>'Residencial','t'=>'Comercial','p'=>'Pessoal','c'=>'Celular'))
				->setPlaceHolder('-- Selecione o tipo de telefone --')
				->addClass('input-xlarge')
		);
		$form->addElement(Input::create('telefone[nr_numero]')->setLabel('Número')->validate()->addClass('input-xlarge telefone'));
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass(array('btn','btn-primary')));
		$this->view->assign('form', $form);
		return $this->returnAjax();
	}

	public function viewEndereco($params = array())
	{
		if(isset($params['id']) && !empty($params['id']))
		{
			$enderecos = $this->em->getRepository('\Entities\Corp\Endereco')->findBy(array("pessoa" => $params['id']));
			$this->view->assign('enderecos', $enderecos);

			if(isset($params['id_endereco']) && !empty($params['id_endereco']))
				$endereco	= $this->em->find('\Entities\Corp\Endereco', $params['id_endereco']);
			else
				$endereco	= new \Entities\Corp\Endereco();
		}

		$form	= new Form();
		$form->addValues($endereco, 'endereco');
		$form->addClass('validate');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveEndereco'));
		$form->addElement(Input::create('endereco[aba]')->setType('hidden')->setValue($params['aba']));
		$form->addElement(Input::create('endereco[pessoa]')->setType('hidden')->setValue($params['id_pessoa'])->setId('id_pessoa'));
		$form->addElement(Input::create('endereco[id_endereco]')->setType('hidden')->setId('idendereco'));

		$form->addElement(Input::create('endereco[cep]')->setLabel('Cep')->setId('cep')->validate()->addClass('input-medium cep'));
		$form->addElement(Input::create('endereco[endereco]')->setLabel('Endereço')->setId('endereco')->validate()->addClass('input-xlarge'));
		$form->addElement(Input::create('endereco[pesquisar]')->setType('button')->setId('pesquisarCep')->setValue('Pesquisar')->addClass(array('btn','btn-success')));
		$form->addElement(Input::create('endereco[complemento]')->setLabel('Complemento')->addClass('input-medium')->setId('complemento'));
		$form->addElement(Input::create('endereco[numero]')->setLabel('Número')->addClass('input-small')->setId('numero'));

		$form->addElement(
				Select::create('endereco[uf]')
				->setLabel('UF')
				->setId('uf')
				->validate()
				->setOption($this->em->getRepository('\Entities\Corp\Endereco')->listComboUf())
				->setPlaceHolder('-- Selecione --')
		);
		$form->addElement(
				Select::create('endereco[cidade]')
				->setLabel('Cidade')
				->setId('idcidade')
				->validate()
				->setOption()
				->setPlaceHolder('-- Selecione uma UF --')
		);
		$form->addElement(
				Select::create('endereco[bairro]')
				->setLabel('Bairro')
				->setId('idbairro')
				->validate()
				->setOption()
				->setPlaceHolder('-- Selecione uma cidade --')
		);


		$form->addElement(Input::create('endereco[salvar]')->setType('submit')->setValue('Salvar')->addClass(array('btn','btn-primary')));
		$this->view->assign('form', $form);
		return $this->returnAjax();

	}

	public function retornaEnderecoJson($params = array())
	{
		$endereco				= $this->em->find('\Entities\Corp\Endereco', $params['idendereco']);
		$retorno['idpessoa']	= $endereco->getPessoa()->get('idpessoa');
		$retorno['idendereco']	= $endereco->getIdEndereco();
		$retorno['endereco']	= $endereco->getEndereco();
		$retorno['uf']			= $endereco->get('uf');
		$retorno['idbairro']	= $endereco->getBairro()->getIdBairro();
		$retorno['idcidade']	= $endereco->getCidade()->getIdCidade();
		$retorno['complemento']	= $endereco->getComplemento();
		$retorno['numero']		= $endereco->getNumero();
		$retorno['cep']			= $endereco->getCep();
		echo json_encode($retorno);
		die;
	}

	public function savePessoa($params = array())
	{
		try
		{
			if ($params['pessoa']['tp_pessoa'] == 'Fisica')
				$instancia	= '\Entities\Corp\PessoaFisica';
			else
				$instancia	= '\Entities\Corp\PessoaJuridica';

			unset($params['pessoa']['tp_pessoa']);

			$service	= new \Foxframe\Service();
			$pessoa		= $service->save($params['pessoa'], $instancia);
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', $pessoa->getDsNome().' salvo com sucesso');
		}
		catch (\Exception $e)
		{
			$this->setFlash('Error', 'Erro ao salvar pessoa', $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/id/".$pessoa->getIdPessoa());
	}

	public function saveEmail($params = array())
	{
		try
		{
			$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['pessoa']['id_pessoa']);
			$email = new \Entities\Corp\Email();
			$email->setDsEmail($params['pessoa']['emails']['ds_email']);
			$email->setPessoa($pessoa);
			$this->em->persist($email);
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', $email->getEmail().' salvo com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao salvar pessoa', $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/id/".$pessoa->getIdPessoa()."/aba/abaEmail");
	}

	public function saveTelefone($params = array())
	{
		try
		{
			$service	= new \Foxframe\Service();
			$telefone		= $service->save($params['telefone'], '\Entities\Corp\Telefone');
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', 'Telefone '.$telefone->getNrNumero().' salvo com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao salvar telefone', $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/id/".$params['telefone']['pessoa']."/aba/abaTelefone");
	}

	public function saveEndereco($params = array())
	{
		$pessoa	= $this->em->find('\Entities\Corp\Pessoa',	$params['endereco']['pessoa']);
		$cidade	= $this->em->find('\Entities\Cep\Cidade',	$params['endereco']['cidade']);
		$bairro	= $this->em->find('\Entities\Cep\Bairro',	$params['endereco']['bairro']);
		try
		{
			if(isset($params['endereco']['idendereco']) && !empty($params['endereco']['idendereco']))
				$endereco	= $this->em->find('\Entities\Corp\Endereco', $params['endereco']['idendereco']);
			else
				$endereco = new \Entities\Corp\Endereco();

			$endereco->setPessoa($pessoa);
			$endereco->setCep($params['endereco']['cep']);
			$endereco->setEndereco($params['endereco']['endereco']);
			$endereco->setBairro($bairro);
			$endereco->setCidade($cidade);
			$endereco->setUf($params['endereco']['uf']);
			$endereco->setComplemento($params['endereco']['complemento']);
			$endereco->setNumero($params['endereco']['numero']);

			$this->em->persist($endereco);
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', 'Endereço salvo com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao salvar pessoa', $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/idpessoa/".$pessoa->getIdPessoa()."/aba/".$params['aba']);
	}

	public function deletarPessoa($params = array())
	{
		try
		{
			$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['id_pessoa']);
			$pessoa->setFlStatus(0);
			$this->em->persist($pessoa);
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', $pessoa->getDsNome().' excluída com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao excluir '.$pessoa->getDsNome(), $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/");
	}

	public function deletarEndereco($params = array())
	{
		try
		{
			$endereco	= $this->em->find('\Entities\Corp\Endereco', $params['idendereco']);
			$this->em->remove($endereco);
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', 'Endereço excluído com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao excluir endereço');
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/id/".$endereco->getPessoa()->getIdPessoa()."/aba/abaEndereco");
	}

	public function viewAlterarSenha($params = array())
	{
		$form	= new Form();
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveAlterarSenha'));
		$form->addElement(Input::create('pessoa[pessoa]')->setType('hidden')->setValue($params['id']));
		$form->addElement(Input::create('pessoa[senha]')->setLabel('Senha')->setType('password')->validate()->addClass('input-medium password autoFocus')->setId('user_password'));
		$form->addElement(Input::create('pessoa[repita_senha]')->setLabel('Repita a senha')->setType('password')->validate()->addClass('input-medium'));
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass(array('btn','btn-primary')));
		$this->view->assign('form', $form);
		return $this->returnAjax();
	}

	public function saveAlterarSenha($params = array())
	{
		try
		{
			$pessoa	= $this->em->find('\Entities\Corp\PessoaFisica', $params['pessoa']['pessoa']);

			$pessoa->setSenha($params['pessoa']['senha']);
			$this->em->persist($pessoa);
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', 'Senha alterada com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao alterar senha', $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/id/".$pessoa->getIdPessoa());
	}

	public function viewVincularPessoas($params = array())
	{
		$option	= $this->em->getRepository('\Entities\Corp\PessoaFisica')->listCombo();
		$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['idpessoa']);
		foreach ($pessoa->getPessoas() as $selecionado)
		{
			if (isset($option[$selecionado->getPessoaFisica()->get('idpessoa')]))
				unset($option[$selecionado->getPessoaFisica()->get('idpessoa')]);
		}

		$form	= new Form();
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveVincularPessoas'));
		$form->addElement(Input::create('pessoa[idpessoa]')->setType('hidden')->setValue($params['idpessoa']));
		$form->addElement(
				Select::create('pessoa[idpessoafisica][]')
				->setLabel('Pessoas Físicas')
				->setPlaceHolder('Selecione')
				->validate()
				->multiple()
				->addClass('select2 input-xxlarge')
				->setOption($option)
		);
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass(array('btn','btn-primary')));
		$this->view->assign('form', $form);

		$criteria	= array(
			'pe.pessoajuridica'	=> $params['idpessoa']
		);
		$lista	= $this->em->getRepository('\Entities\Corp\PessoaEmpresa')->listar($criteria);
		$this->view->assign('lista', $lista->getResult());
		return $this->returnAjax();
	}

	public function saveVincularPessoas($params = array())
	{
		try
		{
			$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['pessoa']['idpessoa']);

			foreach ($params['pessoa']['idpessoafisica'] as $idpessoa)
			{
				$pessoaFisica	= $this->em->find('\Entities\Corp\Pessoa', $idpessoa);

				$pessoaempresa	= new \Entities\Corp\PessoaEmpresa();
				$pessoaempresa->setPessoaFisica($pessoaFisica);
				$pessoaempresa->setPessoaJuridica($pessoa);
				$this->em->persist($pessoaempresa);
			}

			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', 'Pessoa(s) vinculada(s) com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao vincular pessoa(s)', $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/idpessoa/".$pessoa->getIdPessoa()."/aba/abaPessoa");
	}

	public function viewEmpresa($params = array())
	{
		$pessoa		= $this->em->find('\Entities\Corp\Pessoa', $params['idpessoa']);

		$criteria	= array('fldefault' => 1);
		$selected	= $this->em->getRepository('\Entities\Corp\PessoaEmpresa')->findOneBy($criteria);
		if ($selected instanceof \Entities\Corp\PessoaEmpresa)
			$selected	= $selected->getPessoaJuridica()->get('idpessoa');

		$form = new \Foxforms\Widget\Form();
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('pessoa'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveEmpresa'));
		$form->addElement(Input::create('pessoa[idpessoa]')->setType('hidden')->setValue($params['idpessoa']));
		$form->addElement(
			Select::create('pessoaempresa[idpessoajuridica]')
				->setOption($_SESSION[SESSION_LOGIN]['empresas'])
				->setPlaceHolder('-- Selecione --')
				->validate()
				->setLabel('Empresa Default')
				->setSelected($selected)
		);
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass(array('btn','btn-primary')));
		$this->view->assign('form',$form);
		$this->view->assign('pessoa',$pessoa);
		return $this->returnAjax();
	}

	public function saveEmpresa($params = array())
	{
		try
		{
			$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['pessoa']['idpessoa']);

			//setando todas as outras empresas para não default
			foreach ($pessoa->getEmpresas() as $empresa)
			{
				if ($empresa->get('fldefault') == 1)
				{
					$empresa->setDefault(false);
					$this->em->persist($empresa);
				}
				if ($empresa->getPessoaJuridica()->get('idpessoa') == $params['pessoaempresa']['idpessoajuridica'])
				{
					$empresa->setDefault(true);
					$this->em->persist($empresa);
				}

			}
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', 'Empresa default salva com sucesso');
		}
		catch (Exception $e)
		{
			$this->setFlash('Error', 'Erro ao salvar empresa default', $e->getMessage());
		}
		$this->redirect(BASE_PATH."admin/pessoa/viewCadastrar/idpessoa/".$pessoa->getIdPessoa()."/aba/abaEmpresa");
	}


	public function returnPessoa($params = array())
	{
		$param	= array();
		$param['p.flstatus']	= 1;
		if (isset($params['tpnatureza']) && !empty($params['tpnatureza']) && $params['tpnatureza'] == 'D')
			$param['p.flfornecedor']	= 1;
		else if (isset($params['tpnatureza']) && !empty($params['tpnatureza']) && $params['tpnatureza'] == 'C')
			$param['p.flcliente']	= 1;

		$lista	= $this->em->getRepository('\Entities\Corp\Pessoa')->listCombo($param);

		echo json_encode($lista);
		die;
	}

	public function viewPerfil($params = array())
	{
		$pessoa	= $this->em->find('\Entities\Corp\Pessoa', $params['idpessoa']);

		$form = new \Foxforms\Widget\Form();
		$form->addValues($pessoa, 'pessoa');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('admin'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('perfil'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveVincularUsuario'));
		$form->addElement(Input::create('pessoa[idpessoa]')->setType('hidden')->setValue($params['idpessoa']));
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass('btn btn-primary'));
		$form->addElement(
				Select::create('perfil[idperfil]')
				->setLabel('Perfil')
				->validate()
				->setOption($this->em->getRepository('\Entities\Corp\Perfil')->listCombo())
				->setPlaceHolder('-- Selecione --')
				->addClass('input-xlarge')
		);
		$this->view->assign('form', $form);
		$this->view->assign('pessoa', $pessoa);
		$this->returnAjax();
	}
}